var levelOrder = function (root) {
  let queue = []; // 队列存储节点
  let result = []; // 存储最终结果
  if (!root) return result; // 如果根节点为空，直接返回空数组
  queue.push(root); // 把根节点压入队列

  while (queue.length > 0) {
    let temp = []; // 存储当前层的节点值
    let levelSize = queue.length; // 当前层节点的数量

    // 遍历当前层的所有节点
    for (let i = 0; i < levelSize; i++) {
      let front = queue.shift(); // 获取并移除队列头元素

      temp.push(front.val); // 将当前节点的值放入 temp

      // 将当前节点的子节点加入队列
      if (front.left) queue.push(front.left);
      if (front.right) queue.push(front.right);
    }

    result.push(temp); // 当前层的节点值加入最终结果
  }

  return result;
};
